//
//  UPStocksAPIManager.h
//  Uang Pasti
//
//  Created by 李永彬 on 2025/8/16.
//

#import <Foundation/Foundation.h>
#import "UPYinDaoModel.h"
#import "UPLoginVCodeModel.h"
#import "UPLoginModel.h"
#import "Lapidant.h"
#import "IdentityVerificationModel.h"
#import "ProductApplyModel.h"
#import "LoanDetailModel.h"
#import "HistoryLapidantModel.h"
#import "ADRLapidantModel.h"
#import "AuthLapidant.h"
#import "FollowLapidant.h"
#import "PersonalModel.h"
#import "ContactRootModel.h"
#import "UPLocationManager.h"
#import "GoogleMarketModel.h"

NS_ASSUME_NONNULL_BEGIN

@interface UPStocksAPIManager : NSObject

+ (void)fetchEnvironmentWithCompletion:(void(^)(UPYinDaoModel * _Nullable yinDaoModel, NSString * _Nullable msg))completion ;

+ (void)fetchLoginVCodeWithPhoneNum: (NSString *) phoneNum completion:(void(^)(UPLoginVCodeModel * _Nullable vCodeModel, NSString * _Nullable msg))completion ;

+ (void)fetchLoginWithPhoneNum: (NSString *) phoneNum code: (NSString *)code completion:(void(^)(UPLoginModel * _Nullable loginModel, NSString * _Nullable msg))completion;

+ (void)fetchLoginOutWithCompletion:(void(^)(BOOL status, NSString * _Nullable msg))completion;

+ (void)fetchAccountCancelWithCompletion:(void(^)(BOOL status, NSString * _Nullable msg))completion;

+ (void)fetchHomeInfomationWithCompletion:(void(^)(Lapidant * _Nullable model, NSString * _Nullable msg))completion;

+ (void)fetchApplyWithProductId: (NSString *)productId  completion:(void(^)(ProductApplyModel * _Nullable model, NSString * _Nullable msg))completion;

+ (void)fetchLoanHistoryListWithButtonType: (LoanHistoryListType)listType  completion:(void(^)(HistoryLapidantModel * _Nullable model, NSString * _Nullable msg))completion;

+ (void)fetchMyLoanDetailWithProductId: (NSString *)productId  completion:(void(^)(LoanDetailModel * _Nullable model, NSString * _Nullable msg))completion;

/// 用户身份信息
+ (void)fetchAuthenticationWithProductId: (NSString *)productId  completion:(void(^)(IdentityVerificationModel *model, NSString * msg))completion;

+ (void)fetchAddressWithCompletion:(void(^)(ADRLapidantModel *model, NSString * msg))completion;

+ (void) fetchUploadWithImageData: (NSData *)data imageType: (AuthImagePickerType)imageType completion:(void(^)(AuthLapidant *model, NSString * msg))completion;

+ (void)fetchSaveIdentifyInfoWithName:(NSString *)name
                                idNum:(NSString *)idNum
                             birthday:(NSString *)birthday
                            productId:(NSString *)productId
                           productNum:(NSString *)productNum
                           completion:(void(^)(BOOL success, NSString * msg))completion;

+ (void)fetchFollowUpMyProduct: (OmniosityModel *)omniosity
                    completion:(void(^)(FollowLapidant *lapidant, NSString * msg))completion;

+ (void)fetchPersonalInfoWithProductId: (NSString *)productId
                            completion:(void(^)(PersonalLapidantModel *lapidantModel, NSString * msg))completion;

+ (void)fetchSavePersonalInfoWithProductId: (NSString *)productId
                             lapidantModel: (PersonalLapidantModel *)lapidantModel
                                completion:(void(^)(BOOL successs, NSString * msg))completion;

+ (void)fetchContactInfoWithProductId: (NSString *)productId
                           completion:(void(^)(ContactLapidantModel *lapidantModel, NSString * msg))completion;

+ (void)fetchSaveContactInfoWithProductId: (NSString *)productId
                            circumibility: (NSArray<ContactCircumibilityModel *> *)circumibility
                               completion:(void(^)(BOOL success, NSString * msg))completion;

+ (void)fetchBankInfoWithProductId: (NSString *)productId
                        completion:(void(^)(PersonalLapidantModel *lapidantModel, NSString * msg))completion;

+ (void)fetchSaveBankInfoWithProductId: (NSString *)productId
                         lapidantModel: (PersonalLapidantModel *)lapidantModel
                            completion:(void(^)(BOOL successs, NSString * msg))completion;

+ (void)reportLocationInfoWithLocationInfo: (UPLocationInfo)locationInfo
                                completion:(void(^)(BOOL success))completion;

+ (void)reportDeviceInfoWithCompletion:(void(^)(BOOL success))completion;

+ (void)reportToGoogleMarketWithCompletion:(void(^)(GoogleMarketModel *model, NSString * msg))completion;

+ (void)reportToMaiDian:(UPSceneType)sceneType
              productId:(NSString *)productId
             productNum:(NSString *)productNum
         startTimeStamp:(NSInteger)startTimeStamp
           endTimeStamp:(NSInteger)endTimeStamp
             completion:(void(^)(BOOL success))completion ;

+ (void)reportContacts:(NSString *)contactsString
            completion:(void(^)(BOOL success))completion;

@end

NS_ASSUME_NONNULL_END
